home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #5 / Amiga Plus CD - 2000 - No. 5.iso / Tools / Dev / GameboyDev / GBDK / lib / sin_cos.s < prev    next >
Encoding:
Text File  |  1999-04-23  |  881 b   |  86 lines

  1.  
  2.     ; INCLUDE    "macros.ms"
  3.     .include    "math.s"
  4.     .module    sin_cos.ms
  5.     .area    _BSS
  6. tmp:
  7.     .ds    1
  8.     .area    _CODE
  9. .cos::
  10.     ld    a,(.pi2+3)
  11.     ld    b,a
  12.     ld    a,(.pi2+2)
  13.     ld    c,a
  14.     push    bc
  15.     ld    a,(.pi2+1)
  16.     ld    b,a
  17.     ld    a,(.pi2+0)
  18.     ld    c,a
  19.     push    bc
  20.     call    .fadd32
  21. .sin::
  22.     ld    a,(.onedivtwopi+3)
  23.     ld    b,a
  24.     ld    a,(.onedivtwopi+2)
  25.     ld    c,a
  26.     push    bc
  27.     ld    a,(.onedivtwopi+1)
  28.     ld    b,a
  29.     ld    a,(.onedivtwopi+0)
  30.     ld    c,a
  31.     push    bc
  32.     call    .fmul32
  33.     call    .dec
  34.     ld    a,h
  35.     ld    c,h
  36.     and    #0x7f
  37.     inc    a
  38.     inc    a
  39.     bit    7,h
  40.     jr    z,1$
  41.     or    #0x80
  42. 1$:
  43.     ld    h,a
  44. sin_norm:
  45.     cp    #0x42
  46.     jr    z,sin_inc
  47.     or    a
  48.     rr    l
  49.     rr    d
  50.     inc    a
  51.     jr    sin_norm
  52. sin_inc:
  53.     ld    b,l
  54.     rl    d
  55.     rl    l
  56.     rl    d
  57.     rl    l
  58.     bit    6,b
  59.     jr    z,sin_sense
  60.     ld    a,l
  61.     cpl    
  62.     inc    a
  63.     ld    l,a
  64. sin_sense:
  65.     ld    h,#0
  66.     add    hl,hl
  67.     add    hl,hl
  68.     ld    de,#sin_table
  69.     add    hl,de
  70.     ld    e,(hl)
  71.     inc    hl
  72.     ld    d,(hl)
  73.     inc    hl
  74.     ld    a,(hl+)
  75.     ld    h,(hl)
  76.     ld    l,a
  77.     ld    a,b
  78.     and    #0x80
  79.     or    h
  80.     bit    7,c
  81.     jr    z,sin_notneg
  82.     xor    #0x80
  83. sin_notneg:
  84.     ld    h,a
  85.     ret    
  86.